package com.lp.biz.train.mapper;

import com.lp.biz.train.model.dto.TrainAssignMemberDto;
import com.lp.biz.train.model.entity.BizTrainClass;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lp.biz.train.model.query.TrainClassQuery;
import com.lp.biz.train.model.vo.ClassDetail;
import com.lp.biz.train.model.vo.ClassList;
import com.lp.biz.train.model.vo.ClassManage;
import com.lp.biz.train.model.vo.TrainClass;
import com.lp.common.entity.CommonMember;

import java.util.List;

/**
 * BizTrainClassMapper 接口
 * @program: backend
 * @author Ke.Song
 * @since 2024-05-02 10:45:20
 */
public interface BizTrainClassMapper extends BaseMapper<BizTrainClass> {

    /**
     * 获取训练营班级
     *
     * @param params 查询参数
     * @return 查询结果
     */
    List<TrainClass> getTrainClasses(TrainClassQuery params);

    /**
     * 根据用户ID获取可分配班级情况
     *
     * @param memberIds 用户ID
     * @param trainId 训练营id
     * @return 查询结果
     */
    List<TrainAssignMemberDto> getClassListByMemberList(List<Integer> memberIds, Integer trainId);

    /**
     * 获取班级详情
     * @param classId 班级Id
     * @return 查询结果
     */
    ClassDetail getClassDetail(Integer classId);

    /**
     * 获取班级班主任
     * @param classId 班级id
     * @return 查询结果
     */
    CommonMember getClassTeacher(Integer classId);

    /**
     * 获取班级班教练
     * @param classId 班级id
     * @return 查询结果
     */
    CommonMember getClassTrainer(Integer classId);

    /**
     * 获取班级班助教
     * @param classId 班级id
     * @return 查询结果
     */
    List<CommonMember> getClassAssistant(Integer classId);

    /**
     * 获取班级班导师
     * @param classId 班级id
     * @return 查询结果
     */
    List<CommonMember> getClassMentor(Integer classId);

    /**
     * 班主任获取班级列表
     * @param memberId 班主任id
     * @return 查询列表
     */
    List<ClassList> getClasses(Integer memberId);

    /**
     * 插入/更新班级-章节关系
     *
     * @param trainId 训练营id
     */
    void updateClassChapter(Integer trainId);

    /**
     * 获取班级助教/导师
     * @param classId 班级id
     * @return 查询结果
     */
    List<ClassManage> getClassManage(Integer classId);

    /**
     * 删除班级
     * @param classId 班级id
     */
    void deleteClass(Integer classId);

}
